#pragma once

class Cadena;
class ConductorPrueba;
class EstadisticaPrueba;

#include "Puntero.h"
#include "TipoRetorno.h"

class Prueba abstract
{
public:
	Prueba();
	virtual ~Prueba();

	virtual void CorrerPrueba(ConductorPrueba* conductor);
protected:
	virtual void CorrerPruebaConcreta() abstract;
	virtual Cadena GetNombre() const abstract;
	Puntero<EstadisticaPrueba>& GetEstadisticaPrueba();

	void Verificar(TipoRetorno retorno, TipoRetorno retornoEsperado, Cadena comentario);

private:
	Puntero<EstadisticaPrueba> m_EstadisticaPrueba;
	ConductorPrueba* m_Conductor;
};
